#ifndef _TD_SHOT_FACTORY_H_
#define _TD_SHOT_FACTORY_H_


/************************************************************************/
/* Core																	*/
/************************************************************************/
#include "Core/Singleton.h"

/************************************************************************/
/* Game																	*/
/************************************************************************/
//Shots Animations
#include "Game/Game Objects/Towers/Shots/BaseShot.h"
#include "Game/Game Objects/Towers/Shots/StandardShot.h"

using namespace std;
using namespace TD_Core;
using namespace TD_Resources;

namespace TD_Game {

	class ShotFactory : public Singleton<ShotFactory> {

	public:
	
		/************************************************************************/
		/* ctors and dtors					                                    */
		/************************************************************************/
		//Default constructor
		explicit ShotFactory();

		//Copy constructor
		explicit ShotFactory(const ShotFactory &rhs);

		//Assignment constructor
		ShotFactory& operator=(const ShotFactory &rhs);

		//Destructor
		~ShotFactory();


		/************************************************************************/
		/* Functionalities                                                      */
		/************************************************************************/

		static BaseShot * createBaseShot(shotTypes shotType, const Coord2D &initialPosition, unsigned int shotDamage, const BaseMario *targetCreep, unsigned int creepID);

	};

}
#endif